<para>Director supports several SWI commands.</para>

<section id="director/swis/Director_Menu">
  <title>Director_Menu (&4A100)</title>
  <para>Provides a quick way to access Director's *Menu command</para>
  <variablelist>
    <varlistentry>
      <term>Entry</term>
        <listitem><para>r0 = pointer to the command line for the *Menu command</para></listitem>
    </varlistentry>
    <varlistentry>
      <term>Exit</term>
        <listitem><para>none</para></listitem>
    </varlistentry>
  </variablelist>
  <para>These are defined because processing star commands is very slow and in dynamic menus especially it is important that items can be added to menus quickly.</para>
</section>

<section id="director/swis/Director_EndMenu">
  <title>Director_EndMenu (&4A101)</title>
  <para>Provides a quick way to access Director's *EndMenu command</para>
  <variablelist>
    <varlistentry>
      <term>Entry</term>
        <listitem><para>none</para></listitem>
    </varlistentry>
    <varlistentry>
      <term>Exit</term>
        <listitem><para>none</para></listitem>
    </varlistentry>
  </variablelist>
  <para>These are defined because processing star commands is very slow and in dynamic menus especially it is important that items can be added to menus quickly.</para>
</section>

<section id="director/swis/Director_Option">
  <title>Director_Option (&4A102)</title>
  <para>Provides a quick way to access Director's *Option command</para>
  <variablelist>
    <varlistentry>
      <term>Entry</term>
        <listitem><para>r0 = pointer to the command line for the *Option command</para></listitem>
    </varlistentry>
    <varlistentry>
      <term>Exit</term>
        <listitem><para>none</para></listitem>
    </varlistentry>
  </variablelist>
  <para>These are defined because processing star commands is very slow and in dynamic menus especially it is important that items can be added to menus quickly.</para>
</section>

<section id="director/swis/Director_Dash">
  <title>Director_Dash (&4A103)</title>
  <para>Provides a quick way to access Director's *Dash command</para>
  <variablelist>
    <varlistentry>
      <term>Entry</term>
        <listitem><para>none</para></listitem>
    </varlistentry>
    <varlistentry>
      <term>Exit</term>
        <listitem><para>none</para></listitem>
    </varlistentry>
  </variablelist>
  <para>These are defined because processing star commands is very slow and in dynamic menus especially it is important that items can be added to menus quickly.</para>
</section>

<section id="director/swis/Director_Command">
  <title>Director_Command (&4A104)</title>
  <para>Provides a quick way to access Director's *Command command</para>
  <variablelist>
    <varlistentry>
      <term>Entry</term>
        <listitem><para>r0 = pointer to the command line for the *Command command</para></listitem>
    </varlistentry>
    <varlistentry>
      <term>Exit</term>
        <listitem><para>none</para></listitem>
    </varlistentry>
  </variablelist>
  <para>These are defined because processing star commands is very slow and in dynamic menus especially it is important that items can be added to menus quickly.</para>
</section>

<section id="director/swis/Director_Enumerate">
  <title>Director_Enumerate (&4A105)</title>
  <para>This enumerates lists held by director</para>
  <variablelist>
    <varlistentry>
      <term>Entry</term>
        <listitem>
          <para>r0 = pointer to block or to start</para>
          <para>0 = stored menus</para>
          <para>1 = displayed menus</para>
          <para>2 = icons</para>
          <para>3 = filters</para>
          <para>4 = windows</para>
        </listitem>
    </varlistentry>
    <varlistentry>
      <term>Exit</term>
        <listitem><para>r0 = new pointer to block (0 for end)</para>
<para>r1 = pointer to name of block</para></listitem>
    </varlistentry>
  </variablelist>
  <para>Dynamic menus to view these lists and act on them can be found on Director's main menu.</para>
</section>

<section id="director/swis/Director_QuickSort">
  <title>Director_QuickSort (&4A107)</title>
  <para>This sorts an array</para>
  <variablelist>
    <varlistentry>
      <term>Entry</term>
        <listitem>
          <para>r0 = pointer to start of array to sort</para>
          <para>r1 = pointer to end item of array (inclusive)</para>
          <para>r2 = size of an object</para>
          <para>r3 = pointer to comparison routine for the objects</para>
          <variablelist>
            <varlistentry>
              <term>Entry</term>
                <listitem>
                  <para>r0 = pointer to object1</para>
                  <para>r1 = pointer to object2</para>
                </listitem>
            </varlistentry>
            <varlistentry>
              <term>Exit</term>
                <listitem><para>Comparison of object1 and object2 in flags</para></listitem>
            </varlistentry>
          </variablelist>
        </listitem>
    </varlistentry>
    <varlistentry>
      <term>Exit</term>
        <listitem><para>Sorted array</para></listitem>
    </varlistentry>
  </variablelist>
</section>

<section id="director/swis/Director_SortMenu">
  <title>Director_SortMenu (&4A108)</title>
  <para>This sorts a menu. Don't try sorting menu blocks with keys</para>
  <variablelist>
    <varlistentry>
      <term>Entry</term>
        <listitem>
          <para>r0 = pointer to menu name</para>
          <para>r1 = number of start option (or 0 for start)</para>
          <para>r2 = number of end option (inclusive) (or large for end)</para>
        </listitem>
    </varlistentry>
    <varlistentry>
      <term>Exit</term>
        <listitem><para>Sorted menu</para></listitem>
    </varlistentry>
  </variablelist>
</section>